from util.Service import *

# 字段参数校验
def __authParam(body):
    if(not authParam(body.get('method'),['POST','GET','DELETE','PUT'])):
        return False
    if(not authParam(body.get('key'),['sys','user','public'])):
        return False
    if(not authParam(body.get('type'),['handle','sign'])):
        return False
    return True

# 获取系统 所有的接口(分页 所有信息)
def getHandleAll(page:Page = Page(),cdn:dict = dict()):
    Handles = Menu.getAllHandle(page,cdn)
    return Handles
# 获取系统所有的接口 (分页 id 接口名字)
def getHandleName(page:Page = Page(),cdn:dict = dict()):
    Handles = Menu.getAllHandleName(page,cdn)
    return Handles
# 添加系统接口
def addHandle(data:dict):
    try:
        if(not __authParam(data)):
            return False
        data['status'] = '1'
        data['log'] = '0'
        return Menu.addHandle(data)
    except:
        return False
# 修改系统接口 （字段校验）
def updateHandle(k:dict):
    id = k['hId']
    formatParam(k,['hId','log'])
    try:
        if(not __authParam(k)):
            return False
        return Menu.updateHandle([id],k)
    except:
        return False
    
def handleLog(k:list[int],s = '0'):
    if not authParam(s,['0','1']):
        return False
    Menu.updateHandle([k],{'log':s})
    return True
# 删除系统接口 （使用事务删除映射关系）
def delHandle(hid:list[int]):
    # 在角色接口映射表中删除 hid 的映射关系
    # 在菜单接口映射表中删除 hid 的映射关系
    database.transaction()
    try:
        with database.atomic():
            Role.delRoleHandleInHid(hid)
            Menu.delMenuHandleInHid(hid)
            Menu.delHandleInId(hid)
            database.commit()
    except:
        database.rollback()
        return False
    return True

